package com.hoas.api.core.intf;

import com.hoas.api.core.intf.ApiListener;
import com.hoas.api.core.entity.BusinessUser;
import com.hoas.api.core.entity.UserToken;
import com.hoas.api.core.entity.api.BusinessApi;

import java.util.List;

/**
 * API配置
 * @author ZhangQingmu
 * @date   2016年10月23日
 *
 */
public interface BusinessApiConfig {

	/**
	 * 初始化配置
	 * @author ZhangQingmu
	 * @date   2016年10月23日
	 * @throws Exception
	 */
	public void initConfigs() throws Exception;

	/**
	 * 获取API
	 * @author ZhangQingmu
	 * @date   2016年10月23日
	 * @param businessId
	 * @return
	 */
	public BusinessApi getApi(String businessId);
	
	/**
	 * 是否已授权
	 * @author ZhangQingmu
	 * @date   2016年10月23日
	 * @param user
	 * @param api
	 * @return
	 */
	public boolean isAuthorized(BusinessUser user, BusinessApi api);
	
	/**
	 * 通过用户名查找该用户
	 * @author ZhangQingmu
	 * @date   2016年10月23日
	 * @param username
	 * @return
	 */
	public BusinessUser getUserByUsername(String username);
	
	/**
	 * 
	 * @author ZhangQingmu
	 * @date   2016年10月23日
	 * @param user
	 * @return
	 */
	public UserToken getToken(BusinessUser user);

	/**
	 * 刷新token数据
	 * @param refreshToken
	 * @return
	 */
	public UserToken refreshToken(String refreshToken);

	/**
	 * 通过token获取授权用户信息
	 * @param accessToken
	 * @return
	 */
	public BusinessUser getUserByAccessToken(String accessToken);

	/**
	 * 配置接口调用前监听器集合
	 * @return
	 */
	List<ApiListener> getApiListeners();

	
}